using System;
using System.Collections.Generic;
using System.Text;

namespace MIMPGameLibrary
{
    /// <summary>
    /// Throw an IllegalSelectionException when a player attempts to select a Monster but is not allowed to do so.
    /// </summary>
    public class IllegalSelectionException : ApplicationException
    {
        public IllegalSelectionException() { }
        public IllegalSelectionException(string message) : base(message) { }
        public IllegalSelectionException(string message, Exception inner) : base(message, inner) { }

        protected IllegalSelectionException(System.Runtime.Serialization.SerializationInfo info,
            System.Runtime.Serialization.StreamingContext context)
            : base(info, context) { }
    }
    /// <summary>
    /// Throw an IllegalMoveException when a player attempts to move a Monster to a destination it cannot reach.
    /// </summary>
    public class IllegalMoveException : ApplicationException
    {
        public IllegalMoveException() { }
        public IllegalMoveException(string message) : base(message) { }
        public IllegalMoveException(string message, Exception inner) : base(message, inner) { }

        protected IllegalMoveException(System.Runtime.Serialization.SerializationInfo info,
            System.Runtime.Serialization.StreamingContext context)
            : base(info, context) { }
    }
    /// <summary>
    /// Throw an IllegalActionException when a player attempts to take an action with a Monster unable to act again this turn.
    /// </summary>
    public class IllegalActionException : ApplicationException
    {
        public IllegalActionException() { }
        public IllegalActionException(string message) : base(message) { }
        public IllegalActionException(string message, Exception inner) : base(message, inner) { }

        protected IllegalActionException(System.Runtime.Serialization.SerializationInfo info,
            System.Runtime.Serialization.StreamingContext context)
            : base(info, context) { }
    }
    /// <summary>
    /// Throw an IllegalDeploymentException when a player makes an attempt to deploy a new Monster but is not allowed to do so.
    /// </summary>
    public class IllegalDeploymentException : ApplicationException
    {
        public IllegalDeploymentException() { }
        public IllegalDeploymentException(string message) : base(message) { }
        public IllegalDeploymentException(string message, Exception inner) : base(message, inner) { }

        protected IllegalDeploymentException(System.Runtime.Serialization.SerializationInfo info,
            System.Runtime.Serialization.StreamingContext context)
            : base(info, context) { }
    }
}
